1. Field of the Invention
The present invention generally relates to computer security. More specifically, the present invention relates to methods for validating and safely executing an untrusted native code module on a computing device.
2. Related Art
Easy access to computers and plentiful network bandwidth have facilitated sharing of information and applications. For instance, a user can easily install and execute an application which is downloaded from a web site or received from a friend as an email attachment. However, installing and executing such applications on a given computing device involves a level of trust. Because such applications are often executed with inadequate security mechanisms, a user must implicitly trust that the application does not include any malicious code. Some applications exploit such blind trust, however, by including “viruses” that can damage or erase information on the computing device, and can replicate themselves to other vulnerable devices on the network.
Some techniques have been developed to mitigate the negative impacts of viruses. For instance, some interpreted languages seek to reduce the risks involved in executing unknown code by limiting the ability of a language to specify unsafe operations. Alternatively, virtual machine execution environments facilitate running guest operating systems on completely virtualized hardware (which executes on actual hardware), thereby isolating untrusted applications to their own virtual machines to reduce security risks. However, code written for such approaches typically has a performance disadvantage in comparison to executing native code.
Hence, what is needed is a method that provides security without the performance limitations of existing techniques.